package club.xyes.zkh.ecommerce.dao.mapper;

import club.xyes.zkh.ecommerce.commons.entity.UserCoupon;
import club.xyes.zkh.ecommerce.dao.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Create by 郭文梁 2019/4/18 0018 13:32
 * UserCouponMapper
 * 用户优惠券关系实体类
 *
 * @author 郭文梁
 * @data 2019/4/18 0018
 */
@Repository
public interface UserCouponMapper extends BaseMapper<UserCoupon> {
    /**
     * 根据用户ID查询用户所拥有的优惠券，同事关联查询出优惠券的详情
     * 注意：已使用的优惠券不会被查询出来,即仅仅会查询出当前可用的优惠券（status=0x01）
     *
     * @param userId 用户ID
     * @return Coupon List
     */
    List<UserCoupon> selectByUserIdFetchAll(@Param("userId") Integer userId);

    /**
     * 根据ID查询对象 同时查询关联属性
     *
     * @param id ID
     * @return 查询结果对象
     */
    UserCoupon selectByIdFetchAll(@Param("id") Integer id);

    /**
     * 通过用户ID和商铺ID查找优惠券
     *
     * @param userId 用户ID
     * @param shopId 商铺ID
     * @return 优惠券列表
     */
    List<UserCoupon> selectByUserIdAndShopId(@Param("userId") Integer userId,
                                             @Param("shopId") Integer shopId);

    /**
     * 通过用户ID和商铺ID查找可用的优惠券
     *
     * @param userId 用户ID
     * @param shopId 商铺ID
     * @return 优惠券列表
     */
    List<UserCoupon> selectEnableByUserIdAndShopId(@Param("userId") Integer userId,
                                                   @Param("shopId") Integer shopId);

    /**
     * 用过商铺ID和用户ID查询优惠券数量
     *
     * @param shopId 商铺ID
     * @param userId 用户ID
     * @return 优惠券数量
     */
    int selectCountByShopIdAndUserId(@Param("shopId") Integer shopId,
                                     @Param("userId") Integer userId);
}
